package com.as.service.factory;

import com.as.db.dao.FactoryDAO;
import com.as.service.impl.UsuarioServiceImpl;
import com.as.service.util.IConstants;
import com.as.service.IUsuarioService;


public class ServiceFactoryImp implements IServiceFactory {

	private static IServiceFactory serviceFactory = null;
	
	private ServiceFactoryImp() {
		
	}
	
	public static IServiceFactory getInstance() {
		/**
		 * Esta clase esta sincronizada para que solo se cree una instancia de la clase
		 */
		synchronized (ServiceFactoryImp.class) {
			if (serviceFactory == null) {
				serviceFactory = new ServiceFactoryImp();
				return serviceFactory;
			}
			return serviceFactory;
		}
		
	}
	
	public IUsuarioService createServiceAuthentication() {
		IUsuarioService usuarioService = new UsuarioServiceImpl();
		Class<?> clase = null;
		try {
			clase = Class.forName(IConstants.ENTITY_USUARIO);
			usuarioService.setDao(FactoryDAO.getInstance().getGenericDAO(clase));
			return usuarioService;
		} catch (ClassNotFoundException e) {
			//TODO: jconde colocar o no un log aca?
			e.printStackTrace();
			return null;
		}
	}
}
